package com.hui.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.hui.entity.dao.StoreProduct;
import com.hui.entity.vo.ProductVo;
import com.hui.model.storeproduct.StoreProductQueryParam;
import com.hui.util.ResponseResult;

/**
 * 商品表(StoreProduct)表服务接口
 *
 * @author hui
 * @since 2022-07-12 23:08:11
 */
public interface StoreProductService extends IService<StoreProduct> {

    void incProductStock(Integer num, Long productId, String unique, Long activityId, String type);

    /**
     * 获取首页精品推荐
     * 获取首页猜你喜欢
     *
     * @param page       当前页
     * @param limit      信息条数
     * @param order      查询的信息类型
     *                   TYPE_1(1, "精品推荐"),
     *                   TYPE_2(2, "热门榜单"),
     *                   TYPE_3(3, "首发新品"),
     *                   TYPE_4(4, "猜你喜欢");
     * @param isIntegral 是否开启积分兑换
     * @return
     */
    ResponseResult getList(int page, int limit, int order, int isIntegral);

    /**
     * 获取商品列表
     *
     * @param productQueryParam 商品查询参数
     * @return
     */
    ResponseResult getGoodsListByPage(StoreProductQueryParam productQueryParam);

    /**
     * 增加一次商品的浏览量
     *
     * @param productId
     */
    void addGoodsBrowseNum(Long productId);

    /**
     * 获取商品信息
     *
     * @param id
     * @param uid
     * @return
     */
    ProductVo goodsDetail(long id, Long uid);


    /**
     * 查询商品库存
     *
     * @param productId 商品ID
     * @param unique    商品规格唯一值
     * @param type      商品类型
     * @return
     */
    int getProductStock(Long productId, String unique, String type);

    /**
     * 判断商品库存是否充足，在创建订单是被使用
     *
     * @param num
     * @param productId
     * @param unique
     * @param activityId
     * @param type
     */
    void decProductStock(int num, Long productId, String unique, Long activityId, String type);
}

